Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Plus (programming language)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Plus_(programming_language)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Plus_programming_language rootpage-Plus_programming_language skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Plus (programming language)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */


.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}


/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above" style="background-color:#e0e0e0;">Plus</th></tr><tr><th scope="row" class="infobox-label"><a href="Programming_paradigm" title="Programming paradigm">Paradigm</a></th><td class="infobox-data"><a href="Imperative_programming" title="Imperative programming">imperative</a>, <a href="Structured_programming" title="Structured programming">structured</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Software_developer" class="mw-redirect" title="Software developer">Developer</a></th><td class="infobox-data organiser">Alan Ballard and Paul Whaley at <a href="University_of_British_Columbia" title="University of British Columbia">UBC</a></td></tr><tr><th scope="row" class="infobox-label">First&nbsp;appeared</th><td class="infobox-data">1976</td></tr><tr><th scope="row" class="infobox-label"><a href="Type_system" title="Type system">Typing discipline</a></th><td class="infobox-data"><a href="Type_system#Static_typing" title="Type system">static</a>, <a href="Type_system#Strong_and_weak_typing" title="Type system">strong</a>, <a href="Type_system#Safely_and_unsafely_typed_systems" title="Type system">safe</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Operating_system" title="Operating system">OS</a></th><td class="infobox-data"><a href="Michigan_Terminal_System" title="Michigan Terminal System">Michigan Terminal System</a> (MTS), <a href="OS/VS1" title="OS/VS1">OS/VS1</a></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Major <a href="Programming_language_implementation" title="Programming language implementation">implementations</a></th></tr><tr><td colspan="2" class="infobox-full-data"><a href="IBM_System/370" title="IBM System/370">IBM System/370</a>, <a href="Digital_Equipment_Corporation" title="Digital Equipment Corporation">DEC</a> <a href="PDP-11" title="PDP-11">PDP-11</a>, and <a href="Motorola_68000" title="Motorola 68000">Motorola 68000</a></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Influenced by</th></tr><tr><td colspan="2" class="infobox-full-data">SUE, Pascal</td></tr></tbody></table>
<p><b>Plus</b> is a "Pascal-like" system implementation language from the <a href="University_of_British_Columbia" title="University of British Columbia">University of British Columbia</a> (UBC), Canada, based on the SUE<sup id="cite_ref-SUE_1-0" class="reference"><a href="#cite_note-SUE-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> system language developed at the <a href="University_of_Toronto" title="University of Toronto">University of Toronto</a>, c. 1971.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>a<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Description">Description</h2></div>
<p>Plus was developed at the <a href="University_of_British_Columbia" title="University of British Columbia">University of British Columbia</a> (UBC) Computing Centre by Alan Ballard and Paul Whaley for use with and for the development of the <a href="Michigan_Terminal_System" title="Michigan Terminal System">Michigan Terminal System</a> (MTS), but the code generated by the compiler is not operating system dependent and so is not limited to use with or the development of MTS.
</p><p>The UBC Plus compiler is written largely in Plus, runs under the <a href="Michigan_Terminal_System" title="Michigan Terminal System">Michigan Terminal System</a> (MTS) on <a href="S/370" class="mw-redirect" title="S/370">IBM S/370</a> or compatible hardware or under IBM's <a href="OS/VS1" title="OS/VS1">OS/VS1</a>,<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> and generates code for the <a href="S/370" class="mw-redirect" title="S/370">IBM S/370</a>, the <a href="Digital_Equipment_Corporation" title="Digital Equipment Corporation">DEC</a> <a href="PDP-11" title="PDP-11">PDP-11</a>, or the <a href="Motorola_68000" title="Motorola 68000">Motorola 68000</a> architectures.
</p><p>Plus is based to a large extent on the SUE System Language<sup id="cite_ref-SUE_1-1" class="reference"><a href="#cite_note-SUE-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> developed at the University of Toronto, <abbr title="circa">c.</abbr> 1971, which in turn had been derived, particularly in its data structure facilities, from <a href="Pascal_(programming_language)" title="Pascal (programming language)">Pascal</a>.
</p><p>Plus is superficially quite different from SUE or Pascal; however the underlying language semantics are really quite similar. Users familiar with the <a href="C_(programming_language)" title="C (programming language)">C programming language</a> will also recognize much of its structure and semantics in PLUS.
</p><p>Goals for the compiler and the Plus language include:<sup id="cite_ref-PLUS_6-0" class="reference"><a href="#cite_note-PLUS-6"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<ol><li>Allow and encourage reasonable program structures</li>
<li>Provide problem-oriented data structures</li>
<li>Allow and encourage readable and understandable source code</li>
<li>Allow for parametrization using symbolic constants</li>
<li>Actively assist in the detection and isolation of errors, at compile-time if possible and optionally at run-time where necessary</li>
<li>Generate efficient code</li>
<li>Provide facilities necessary for systems programming</li>
<li>Provide reasonably efficient compilation including separate compilation of different parts of a program</li>
<li>Optionally produce symbol (SYM) information allowing programs to be debugged using a Symbolic Debugging System such as SDS under MTS</li></ol>
<p>The compiler generates extensive source listings, including cross-references. In addition, it automatically formats the source using strict rules and has a simple mark-up language for comments.
</p><p>The manual, <i>UBC PLUS: The Plus Programming Language</i>,<sup id="cite_ref-PLUS_6-1" class="reference"><a href="#cite_note-PLUS-6"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> is available. A description of the source and object libraries available for use with Plus, <i>PLUS Source Library Definitions</i>, is also available.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="&quot;Hello,_world&quot;_example">"Hello, world" example</h2></div>
<p>The "<a href="Hello%2C_world" class="mw-redirect" title="Hello, world">hello, world</a>" example program prints the string "Hello, world!" to a terminal or screen display.
</p>
<pre>%Title&nbsp;:= "Hello world";
%Include(Pluslist);
%Subtitle&nbsp;:= "Definitions";
%Lower_Case&nbsp;:= True;

/* Definitions that everyone needs */
%Include(Boolean, Numeric_Types, More_Numeric_Types, String_Types,
More_String_Types);

/* A tasteful subset of procedure definitions */
%Include(Main);

/* Message routine definitions */
%Include(Message_Initialize, Message, Message_Terminate);

%Subtitle&nbsp;:= "Local Procedure Definitions";
%Eject();
definition Main

variable Mcb is pointer to Stream_Type;

Mcb&nbsp;:= Message_Initialize();
Message(Mcb, "Hello, world!");
Message_Terminate(Mcb);
Mcb&nbsp;:= Null;
end Main;
</pre>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Michigan_Terminal_System" title="Michigan Terminal System">Michigan Terminal System</a> (MTS)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Notes">Notes</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist reflist-lower-alpha">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text">There is a separate programming language named PLUS, developed at Sperry Univac in Roseville, Minnesota.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-SUE-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-SUE_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-SUE_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://doi.acm.org/10.1145/800234.807062"><i>The System Language for Project SUE</i></a>, B. L. Clark and J. J. Horning of the Computer Systems Research Group and Department of Computer Science, University of Toronto, Proceedings of the SIGPLAN symposium on Languages for system implementation, 1971, pages 79-88</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.google.com/file/d/0B4t_NX-QeWDYYlYydkNuQjFTU3k0dHg5VUpWQXJOdw/edit">"The Plus Systems Programming Language"</a>, <a rel="nofollow" class="external text" href="https://riordanmr.github.io/mischtml/mts/ThePlusSystemsProgrammingLanguage.html">HTML version</a>, Alan Ballard and Paul Whaley, <i>Proceedings of Canadian Information Processing Society (CIPS) Congress 84, June 1984</i></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://portal.acm.org/citation.cfm?doid=954127.954144">The PLUS Programming Language</a>, Frank W. Stodola, Sperry Univac, Roseville, Minnesota, <i>ACM SIGPLAN Notices</i>, Volume 15, Issue 1 (January 1980), pp. 146-155</span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text">Using Peter Ludemann's emulation of MTS system calls.</span>
</li>
<li id="cite_note-PLUS-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-PLUS_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-PLUS_6-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://hdl.handle.net/2027.42/79616"><i>The PLUS Programming Language</i></a>, Allan Ballard and Paul Whaley, pp. 2-5, revised 1987, Computing Centre, University of British Columbia</span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://hdl.handle.net/2027.42/79577"><i>PLUS Source Library Definitions</i></a>, Alan Ballard, 1983, University of British Columbia Computing Centre, 139pp.</span>
</li>
</ol></div></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-01" href="https://en.wikipedia.org/wiki/?title=Plus_(programming_language)&amp;oldid=1298275538">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>